// Written in the D Programming Language
/*
 * Copyright (c) 2008 OpenGLUtils
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 *
 * * Redistributions of source code must retain the above copyright
 *   notice, this list of conditions and the following disclaimer.
 *
 * * Redistributions in binary form must reproduce the above copyright
 *   notice, this list of conditions and the following disclaimer in the
 *   documentation and/or other materials provided with the distribution.
 *
 * * Neither the name of 'OpenGLUtils' nor the names of its contributors 
 *   may be used to endorse or promote products derived from this software 
 *   without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
module openglutils.DebugGL;

/// Imports the OpenGL functions and variables
public import derelict.opengl.gl;

import tango.core.Traits;

import openglutils.GLException;
import openglutils.GLError;

private bool insideGlBegin;

/**
 * A template for checking OpenGL errors after calling an OpenGL function.
 * 
 * Params:
 *     args = the arguments for the OpenGL function 
 * Returns: The called function's return value
 */
public ReturnTypeOf!(typeof(*Fn)) glCheck(alias Fn)(ParameterTupleOf!(typeof(*Fn)) args)
{
    alias ReturnTypeOf!(typeof(*Fn)) returnT;
    
    static if(is(returnT == void))
    {
        Fn(args);
    } 
    else
    {
    	returnT result = Fn(args);
    }

    static if (Fn.stringof == "glBegin")
    {
    	insideGlBegin = true;
    }
    
    glCheckError(Fn.stringof, insideGlBegin);

    static if (Fn.stringof == "glEnd")
    {
    	insideGlBegin = false;
    }

    static if(!is(returnT == void))
    {
        return result;
    }
}

// OpenGL 1.0 and 1.1 functions
public alias glCheck!(derelict.opengl.gl.glClearIndex) glClearIndex;
public alias glCheck!(derelict.opengl.gl.glClearColor) glClearColor;
public alias glCheck!(derelict.opengl.gl.glClear) glClear;
public alias glCheck!(derelict.opengl.gl.glIndexMask) glIndexMask;
public alias glCheck!(derelict.opengl.gl.glColorMask) glColorMask;
public alias glCheck!(derelict.opengl.gl.glAlphaFunc) glAlphaFunc;
public alias glCheck!(derelict.opengl.gl.glBlendFunc) glBlendFunc;
public alias glCheck!(derelict.opengl.gl.glLogicOp) glLogicOp;
public alias glCheck!(derelict.opengl.gl.glCullFace) glCullFace;
public alias glCheck!(derelict.opengl.gl.glFrontFace) glFrontFace;
public alias glCheck!(derelict.opengl.gl.glPointSize) glPointSize;
public alias glCheck!(derelict.opengl.gl.glLineWidth) glLineWidth;
public alias glCheck!(derelict.opengl.gl.glLineStipple) glLineStipple;
public alias glCheck!(derelict.opengl.gl.glPolygonMode) glPolygonMode;
public alias glCheck!(derelict.opengl.gl.glPolygonOffset) glPolygonOffset;
public alias glCheck!(derelict.opengl.gl.glPolygonStipple) glPolygonStipple;
public alias glCheck!(derelict.opengl.gl.glGetPolygonStipple) glGetPolygonStipple;
public alias glCheck!(derelict.opengl.gl.glEdgeFlag) glEdgeFlag;
public alias glCheck!(derelict.opengl.gl.glEdgeFlagv) glEdgeFlagv;
public alias glCheck!(derelict.opengl.gl.glScissor) glScissor;
public alias glCheck!(derelict.opengl.gl.glClipPlane) glClipPlane;
public alias glCheck!(derelict.opengl.gl.glGetClipPlane) glGetClipPlane;
public alias glCheck!(derelict.opengl.gl.glDrawBuffer) glDrawBuffer;
public alias glCheck!(derelict.opengl.gl.glReadBuffer) glReadBuffer;
public alias glCheck!(derelict.opengl.gl.glEnable) glEnable;
public alias glCheck!(derelict.opengl.gl.glDisable) glDisable;
public alias glCheck!(derelict.opengl.gl.glIsEnabled) glIsEnabled;
public alias glCheck!(derelict.opengl.gl.glEnableClientState) glEnableClientState;
public alias glCheck!(derelict.opengl.gl.glDisableClientState) glDisableClientState;
public alias glCheck!(derelict.opengl.gl.glGetBooleanv) glGetBooleanv;
public alias glCheck!(derelict.opengl.gl.glGetDoublev) glGetDoublev;
public alias glCheck!(derelict.opengl.gl.glGetFloatv) glGetFloatv;
public alias glCheck!(derelict.opengl.gl.glGetIntegerv) glGetIntegerv;
public alias glCheck!(derelict.opengl.gl.glPushAttrib) glPushAttrib;
public alias glCheck!(derelict.opengl.gl.glPopAttrib) glPopAttrib;
public alias glCheck!(derelict.opengl.gl.glPushClientAttrib) glPushClientAttrib;
public alias glCheck!(derelict.opengl.gl.glPopClientAttrib) glPopClientAttrib;
public alias glCheck!(derelict.opengl.gl.glRenderMode) glRenderMode;
// Goes into infinite loop
// public alias glCheck!(derelict.opengl.gl.glGetError) glGetError;
public alias glCheck!(derelict.opengl.gl.glGetString) glGetString;
public alias glCheck!(derelict.opengl.gl.glFinish) glFinish;
public alias glCheck!(derelict.opengl.gl.glFlush) glFlush;
public alias glCheck!(derelict.opengl.gl.glHint) glHint;
public alias glCheck!(derelict.opengl.gl.glClearDepth) glClearDepth;
public alias glCheck!(derelict.opengl.gl.glDepthFunc) glDepthFunc;
public alias glCheck!(derelict.opengl.gl.glDepthMask) glDepthMask;
public alias glCheck!(derelict.opengl.gl.glDepthRange) glDepthRange;
public alias glCheck!(derelict.opengl.gl.glClearAccum) glClearAccum;
public alias glCheck!(derelict.opengl.gl.glAccum) glAccum;
public alias glCheck!(derelict.opengl.gl.glMatrixMode) glMatrixMode;
public alias glCheck!(derelict.opengl.gl.glOrtho) glOrtho;
public alias glCheck!(derelict.opengl.gl.glFrustum) glFrustum;
public alias glCheck!(derelict.opengl.gl.glViewport) glViewport;
public alias glCheck!(derelict.opengl.gl.glPushMatrix) glPushMatrix;
public alias glCheck!(derelict.opengl.gl.glPopMatrix) glPopMatrix;
public alias glCheck!(derelict.opengl.gl.glLoadIdentity) glLoadIdentity;
public alias glCheck!(derelict.opengl.gl.glLoadMatrixd) glLoadMatrixd;
public alias glCheck!(derelict.opengl.gl.glLoadMatrixf) glLoadMatrixf;
public alias glCheck!(derelict.opengl.gl.glMultMatrixd) glMultMatrixd;
public alias glCheck!(derelict.opengl.gl.glMultMatrixf) glMultMatrixf;
public alias glCheck!(derelict.opengl.gl.glRotated) glRotated;
public alias glCheck!(derelict.opengl.gl.glRotatef) glRotatef;
public alias glCheck!(derelict.opengl.gl.glScaled) glScaled;
public alias glCheck!(derelict.opengl.gl.glScalef) glScalef;
public alias glCheck!(derelict.opengl.gl.glTranslated) glTranslated;
public alias glCheck!(derelict.opengl.gl.glTranslatef) glTranslatef;
public alias glCheck!(derelict.opengl.gl.glIsList) glIsList;
public alias glCheck!(derelict.opengl.gl.glDeleteLists) glDeleteLists;
public alias glCheck!(derelict.opengl.gl.glGenLists) glGenLists;
public alias glCheck!(derelict.opengl.gl.glNewList) glNewList;
public alias glCheck!(derelict.opengl.gl.glEndList) glEndList;
public alias glCheck!(derelict.opengl.gl.glCallList) glCallList;
public alias glCheck!(derelict.opengl.gl.glCallLists) glCallLists;
public alias glCheck!(derelict.opengl.gl.glListBase) glListBase;
public alias glCheck!(derelict.opengl.gl.glBegin) glBegin;
public alias glCheck!(derelict.opengl.gl.glEnd) glEnd;
public alias glCheck!(derelict.opengl.gl.glVertex2d) glVertex2d;
public alias glCheck!(derelict.opengl.gl.glVertex2f) glVertex2f;
public alias glCheck!(derelict.opengl.gl.glVertex2i) glVertex2i;
public alias glCheck!(derelict.opengl.gl.glVertex2s) glVertex2s;
public alias glCheck!(derelict.opengl.gl.glVertex3d) glVertex3d;
public alias glCheck!(derelict.opengl.gl.glVertex3f) glVertex3f;
public alias glCheck!(derelict.opengl.gl.glVertex3i) glVertex3i;
public alias glCheck!(derelict.opengl.gl.glVertex3s) glVertex3s;
public alias glCheck!(derelict.opengl.gl.glVertex4d) glVertex4d;
public alias glCheck!(derelict.opengl.gl.glVertex4f) glVertex4f;
public alias glCheck!(derelict.opengl.gl.glVertex4i) glVertex4i;
public alias glCheck!(derelict.opengl.gl.glVertex4s) glVertex4s;
public alias glCheck!(derelict.opengl.gl.glVertex2dv) glVertex2dv;
public alias glCheck!(derelict.opengl.gl.glVertex2fv) glVertex2fv;
public alias glCheck!(derelict.opengl.gl.glVertex2iv) glVertex2iv;
public alias glCheck!(derelict.opengl.gl.glVertex2sv) glVertex2sv;
public alias glCheck!(derelict.opengl.gl.glVertex3dv) glVertex3dv;
public alias glCheck!(derelict.opengl.gl.glVertex3fv) glVertex3fv;
public alias glCheck!(derelict.opengl.gl.glVertex3iv) glVertex3iv;
public alias glCheck!(derelict.opengl.gl.glVertex3sv) glVertex3sv;
public alias glCheck!(derelict.opengl.gl.glVertex4dv) glVertex4dv;
public alias glCheck!(derelict.opengl.gl.glVertex4fv) glVertex4fv;
public alias glCheck!(derelict.opengl.gl.glVertex4iv) glVertex4iv;
public alias glCheck!(derelict.opengl.gl.glVertex4sv) glVertex4sv;
public alias glCheck!(derelict.opengl.gl.glNormal3b) glNormal3b;
public alias glCheck!(derelict.opengl.gl.glNormal3d) glNormal3d;
public alias glCheck!(derelict.opengl.gl.glNormal3f) glNormal3f;
public alias glCheck!(derelict.opengl.gl.glNormal3i) glNormal3i;
public alias glCheck!(derelict.opengl.gl.glNormal3s) glNormal3s;
public alias glCheck!(derelict.opengl.gl.glNormal3bv) glNormal3bv;
public alias glCheck!(derelict.opengl.gl.glNormal3dv) glNormal3dv;
public alias glCheck!(derelict.opengl.gl.glNormal3fv) glNormal3fv;
public alias glCheck!(derelict.opengl.gl.glNormal3iv) glNormal3iv;
public alias glCheck!(derelict.opengl.gl.glNormal3sv) glNormal3sv;
public alias glCheck!(derelict.opengl.gl.glIndexd) glIndexd;
public alias glCheck!(derelict.opengl.gl.glIndexf) glIndexf;
public alias glCheck!(derelict.opengl.gl.glIndexi) glIndexi;
public alias glCheck!(derelict.opengl.gl.glIndexs) glIndexs;
public alias glCheck!(derelict.opengl.gl.glIndexub) glIndexub;
public alias glCheck!(derelict.opengl.gl.glIndexdv) glIndexdv;
public alias glCheck!(derelict.opengl.gl.glIndexfv) glIndexfv;
public alias glCheck!(derelict.opengl.gl.glIndexiv) glIndexiv;
public alias glCheck!(derelict.opengl.gl.glIndexsv) glIndexsv;
public alias glCheck!(derelict.opengl.gl.glIndexubv) glIndexubv;
public alias glCheck!(derelict.opengl.gl.glColor3b) glColor3b;
public alias glCheck!(derelict.opengl.gl.glColor3d) glColor3d;
public alias glCheck!(derelict.opengl.gl.glColor3f) glColor3f;
public alias glCheck!(derelict.opengl.gl.glColor3i) glColor3i;
public alias glCheck!(derelict.opengl.gl.glColor3s) glColor3s;
public alias glCheck!(derelict.opengl.gl.glColor3ub) glColor3ub;
public alias glCheck!(derelict.opengl.gl.glColor3ui) glColor3ui;
public alias glCheck!(derelict.opengl.gl.glColor3us) glColor3us;
public alias glCheck!(derelict.opengl.gl.glColor4b) glColor4b;
public alias glCheck!(derelict.opengl.gl.glColor4d) glColor4d;
public alias glCheck!(derelict.opengl.gl.glColor4f) glColor4f;
public alias glCheck!(derelict.opengl.gl.glColor4i) glColor4i;
public alias glCheck!(derelict.opengl.gl.glColor4s) glColor4s;
public alias glCheck!(derelict.opengl.gl.glColor4ub) glColor4ub;
public alias glCheck!(derelict.opengl.gl.glColor4ui) glColor4ui;
public alias glCheck!(derelict.opengl.gl.glColor4us) glColor4us;
public alias glCheck!(derelict.opengl.gl.glColor3bv) glColor3bv;
public alias glCheck!(derelict.opengl.gl.glColor3dv) glColor3dv;
public alias glCheck!(derelict.opengl.gl.glColor3fv) glColor3fv;
public alias glCheck!(derelict.opengl.gl.glColor3iv) glColor3iv;
public alias glCheck!(derelict.opengl.gl.glColor3sv) glColor3sv;
public alias glCheck!(derelict.opengl.gl.glColor3ubv) glColor3ubv;
public alias glCheck!(derelict.opengl.gl.glColor3uiv) glColor3uiv;
public alias glCheck!(derelict.opengl.gl.glColor3usv) glColor3usv;
public alias glCheck!(derelict.opengl.gl.glColor4bv) glColor4bv;
public alias glCheck!(derelict.opengl.gl.glColor4dv) glColor4dv;
public alias glCheck!(derelict.opengl.gl.glColor4fv) glColor4fv;
public alias glCheck!(derelict.opengl.gl.glColor4iv) glColor4iv;
public alias glCheck!(derelict.opengl.gl.glColor4sv) glColor4sv;
public alias glCheck!(derelict.opengl.gl.glColor4ubv) glColor4ubv;
public alias glCheck!(derelict.opengl.gl.glColor4uiv) glColor4uiv;
public alias glCheck!(derelict.opengl.gl.glColor4usv) glColor4usv;
public alias glCheck!(derelict.opengl.gl.glTexCoord1d) glTexCoord1d;
public alias glCheck!(derelict.opengl.gl.glTexCoord1f) glTexCoord1f;
public alias glCheck!(derelict.opengl.gl.glTexCoord1i) glTexCoord1i;
public alias glCheck!(derelict.opengl.gl.glTexCoord1s) glTexCoord1s;
public alias glCheck!(derelict.opengl.gl.glTexCoord2d) glTexCoord2d;
public alias glCheck!(derelict.opengl.gl.glTexCoord2f) glTexCoord2f;
public alias glCheck!(derelict.opengl.gl.glTexCoord2i) glTexCoord2i;
public alias glCheck!(derelict.opengl.gl.glTexCoord2s) glTexCoord2s;
public alias glCheck!(derelict.opengl.gl.glTexCoord3d) glTexCoord3d;
public alias glCheck!(derelict.opengl.gl.glTexCoord3f) glTexCoord3f;
public alias glCheck!(derelict.opengl.gl.glTexCoord3i) glTexCoord3i;
public alias glCheck!(derelict.opengl.gl.glTexCoord3s) glTexCoord3s;
public alias glCheck!(derelict.opengl.gl.glTexCoord4d) glTexCoord4d;
public alias glCheck!(derelict.opengl.gl.glTexCoord4f) glTexCoord4f;
public alias glCheck!(derelict.opengl.gl.glTexCoord4i) glTexCoord4i;
public alias glCheck!(derelict.opengl.gl.glTexCoord4s) glTexCoord4s;
public alias glCheck!(derelict.opengl.gl.glTexCoord1dv) glTexCoord1dv;
public alias glCheck!(derelict.opengl.gl.glTexCoord1fv) glTexCoord1fv;
public alias glCheck!(derelict.opengl.gl.glTexCoord1iv) glTexCoord1iv;
public alias glCheck!(derelict.opengl.gl.glTexCoord1sv) glTexCoord1sv;
public alias glCheck!(derelict.opengl.gl.glTexCoord2dv) glTexCoord2dv;
public alias glCheck!(derelict.opengl.gl.glTexCoord2fv) glTexCoord2fv;
public alias glCheck!(derelict.opengl.gl.glTexCoord2iv) glTexCoord2iv;
public alias glCheck!(derelict.opengl.gl.glTexCoord2sv) glTexCoord2sv;
public alias glCheck!(derelict.opengl.gl.glTexCoord3dv) glTexCoord3dv;
public alias glCheck!(derelict.opengl.gl.glTexCoord3fv) glTexCoord3fv;
public alias glCheck!(derelict.opengl.gl.glTexCoord3iv) glTexCoord3iv;
public alias glCheck!(derelict.opengl.gl.glTexCoord3sv) glTexCoord3sv;
public alias glCheck!(derelict.opengl.gl.glTexCoord4dv) glTexCoord4dv;
public alias glCheck!(derelict.opengl.gl.glTexCoord4fv) glTexCoord4fv;
public alias glCheck!(derelict.opengl.gl.glTexCoord4iv) glTexCoord4iv;
public alias glCheck!(derelict.opengl.gl.glTexCoord4sv) glTexCoord4sv;
public alias glCheck!(derelict.opengl.gl.glRasterPos2d) glRasterPos2d;
public alias glCheck!(derelict.opengl.gl.glRasterPos2f) glRasterPos2f;
public alias glCheck!(derelict.opengl.gl.glRasterPos2i) glRasterPos2i;
public alias glCheck!(derelict.opengl.gl.glRasterPos2s) glRasterPos2s;
public alias glCheck!(derelict.opengl.gl.glRasterPos3d) glRasterPos3d;
public alias glCheck!(derelict.opengl.gl.glRasterPos3f) glRasterPos3f;
public alias glCheck!(derelict.opengl.gl.glRasterPos3i) glRasterPos3i;
public alias glCheck!(derelict.opengl.gl.glRasterPos3s) glRasterPos3s;
public alias glCheck!(derelict.opengl.gl.glRasterPos4d) glRasterPos4d;
public alias glCheck!(derelict.opengl.gl.glRasterPos4f) glRasterPos4f;
public alias glCheck!(derelict.opengl.gl.glRasterPos4i) glRasterPos4i;
public alias glCheck!(derelict.opengl.gl.glRasterPos4s) glRasterPos4s;
public alias glCheck!(derelict.opengl.gl.glRasterPos2dv) glRasterPos2dv;
public alias glCheck!(derelict.opengl.gl.glRasterPos2fv) glRasterPos2fv;
public alias glCheck!(derelict.opengl.gl.glRasterPos2iv) glRasterPos2iv;
public alias glCheck!(derelict.opengl.gl.glRasterPos2sv) glRasterPos2sv;
public alias glCheck!(derelict.opengl.gl.glRasterPos3dv) glRasterPos3dv;
public alias glCheck!(derelict.opengl.gl.glRasterPos3fv) glRasterPos3fv;
public alias glCheck!(derelict.opengl.gl.glRasterPos3iv) glRasterPos3iv;
public alias glCheck!(derelict.opengl.gl.glRasterPos3sv) glRasterPos3sv;
public alias glCheck!(derelict.opengl.gl.glRasterPos4dv) glRasterPos4dv;
public alias glCheck!(derelict.opengl.gl.glRasterPos4fv) glRasterPos4fv;
public alias glCheck!(derelict.opengl.gl.glRasterPos4iv) glRasterPos4iv;
public alias glCheck!(derelict.opengl.gl.glRasterPos4sv) glRasterPos4sv;
public alias glCheck!(derelict.opengl.gl.glRectd) glRectd;
public alias glCheck!(derelict.opengl.gl.glRectf) glRectf;
public alias glCheck!(derelict.opengl.gl.glRecti) glRecti;
public alias glCheck!(derelict.opengl.gl.glRects) glRects;
public alias glCheck!(derelict.opengl.gl.glRectdv) glRectdv;
public alias glCheck!(derelict.opengl.gl.glRectfv) glRectfv;
public alias glCheck!(derelict.opengl.gl.glRectiv) glRectiv;
public alias glCheck!(derelict.opengl.gl.glRectsv) glRectsv;
public alias glCheck!(derelict.opengl.gl.glShadeModel) glShadeModel;
public alias glCheck!(derelict.opengl.gl.glLightf) glLightf;
public alias glCheck!(derelict.opengl.gl.glLighti) glLighti;
public alias glCheck!(derelict.opengl.gl.glLightfv) glLightfv;
public alias glCheck!(derelict.opengl.gl.glLightiv) glLightiv;
public alias glCheck!(derelict.opengl.gl.glGetLightfv) glGetLightfv;
public alias glCheck!(derelict.opengl.gl.glGetLightiv) glGetLightiv;
public alias glCheck!(derelict.opengl.gl.glLightModelf) glLightModelf;
public alias glCheck!(derelict.opengl.gl.glLightModeli) glLightModeli;
public alias glCheck!(derelict.opengl.gl.glLightModelfv) glLightModelfv;
public alias glCheck!(derelict.opengl.gl.glLightModeliv) glLightModeliv;
public alias glCheck!(derelict.opengl.gl.glMaterialf) glMaterialf;
public alias glCheck!(derelict.opengl.gl.glMateriali) glMateriali;
public alias glCheck!(derelict.opengl.gl.glMaterialfv) glMaterialfv;
public alias glCheck!(derelict.opengl.gl.glMaterialiv) glMaterialiv;
public alias glCheck!(derelict.opengl.gl.glGetMaterialfv) glGetMaterialfv;
public alias glCheck!(derelict.opengl.gl.glGetMaterialiv) glGetMaterialiv;
public alias glCheck!(derelict.opengl.gl.glColorMaterial) glColorMaterial;
public alias glCheck!(derelict.opengl.gl.glPixelZoom) glPixelZoom;
public alias glCheck!(derelict.opengl.gl.glPixelStoref) glPixelStoref;
public alias glCheck!(derelict.opengl.gl.glPixelStorei) glPixelStorei;
public alias glCheck!(derelict.opengl.gl.glPixelTransferf) glPixelTransferf;
public alias glCheck!(derelict.opengl.gl.glPixelTransferi) glPixelTransferi;
public alias glCheck!(derelict.opengl.gl.glPixelMapfv) glPixelMapfv;
public alias glCheck!(derelict.opengl.gl.glPixelMapuiv) glPixelMapuiv;
public alias glCheck!(derelict.opengl.gl.glPixelMapusv) glPixelMapusv;
public alias glCheck!(derelict.opengl.gl.glGetPixelMapfv) glGetPixelMapfv;
public alias glCheck!(derelict.opengl.gl.glGetPixelMapuiv) glGetPixelMapuiv;
public alias glCheck!(derelict.opengl.gl.glGetPixelMapusv) glGetPixelMapusv;
public alias glCheck!(derelict.opengl.gl.glBitmap) glBitmap;
public alias glCheck!(derelict.opengl.gl.glReadPixels) glReadPixels;
public alias glCheck!(derelict.opengl.gl.glDrawPixels) glDrawPixels;
public alias glCheck!(derelict.opengl.gl.glCopyPixels) glCopyPixels;
public alias glCheck!(derelict.opengl.gl.glStencilFunc) glStencilFunc;
public alias glCheck!(derelict.opengl.gl.glStencilMask) glStencilMask;
public alias glCheck!(derelict.opengl.gl.glStencilOp) glStencilOp;
public alias glCheck!(derelict.opengl.gl.glClearStencil) glClearStencil;
public alias glCheck!(derelict.opengl.gl.glTexGend) glTexGend;
public alias glCheck!(derelict.opengl.gl.glTexGenf) glTexGenf;
public alias glCheck!(derelict.opengl.gl.glTexGeni) glTexGeni;
public alias glCheck!(derelict.opengl.gl.glTexGendv) glTexGendv;
public alias glCheck!(derelict.opengl.gl.glTexGenfv) glTexGenfv;
public alias glCheck!(derelict.opengl.gl.glTexGeniv) glTexGeniv;
public alias glCheck!(derelict.opengl.gl.glGetTexGendv) glGetTexGendv;
public alias glCheck!(derelict.opengl.gl.glGetTexGenfv) glGetTexGenfv;
public alias glCheck!(derelict.opengl.gl.glGetTexGeniv) glGetTexGeniv;
public alias glCheck!(derelict.opengl.gl.glTexEnvf) glTexEnvf;
public alias glCheck!(derelict.opengl.gl.glTexEnvi) glTexEnvi;
public alias glCheck!(derelict.opengl.gl.glTexEnvfv) glTexEnvfv;
public alias glCheck!(derelict.opengl.gl.glTexEnviv) glTexEnviv;
public alias glCheck!(derelict.opengl.gl.glGetTexEnvfv) glGetTexEnvfv;
public alias glCheck!(derelict.opengl.gl.glGetTexEnviv) glGetTexEnviv;
public alias glCheck!(derelict.opengl.gl.glTexParameterf) glTexParameterf;
public alias glCheck!(derelict.opengl.gl.glTexParameteri) glTexParameteri;
public alias glCheck!(derelict.opengl.gl.glTexParameterfv) glTexParameterfv;
public alias glCheck!(derelict.opengl.gl.glTexParameteriv) glTexParameteriv;
public alias glCheck!(derelict.opengl.gl.glGetTexParameterfv) glGetTexParameterfv;
public alias glCheck!(derelict.opengl.gl.glGetTexParameteriv) glGetTexParameteriv;
public alias glCheck!(derelict.opengl.gl.glGetTexLevelParameterfv) glGetTexLevelParameterfv;
public alias glCheck!(derelict.opengl.gl.glGetTexLevelParameteriv) glGetTexLevelParameteriv;
public alias glCheck!(derelict.opengl.gl.glTexImage1D) glTexImage1D;
public alias glCheck!(derelict.opengl.gl.glTexImage2D) glTexImage2D;
public alias glCheck!(derelict.opengl.gl.glGetTexImage) glGetTexImage;
public alias glCheck!(derelict.opengl.gl.glMap1d) glMap1d;
public alias glCheck!(derelict.opengl.gl.glMap1f) glMap1f;
public alias glCheck!(derelict.opengl.gl.glMap2d) glMap2d;
public alias glCheck!(derelict.opengl.gl.glMap2f) glMap2f;
public alias glCheck!(derelict.opengl.gl.glGetMapdv) glGetMapdv;
public alias glCheck!(derelict.opengl.gl.glGetMapfv) glGetMapfv;
public alias glCheck!(derelict.opengl.gl.glGetMapiv) glGetMapiv;
public alias glCheck!(derelict.opengl.gl.glEvalCoord1d) glEvalCoord1d;
public alias glCheck!(derelict.opengl.gl.glEvalCoord1f) glEvalCoord1f;
public alias glCheck!(derelict.opengl.gl.glEvalCoord1dv) glEvalCoord1dv;
public alias glCheck!(derelict.opengl.gl.glEvalCoord1fv) glEvalCoord1fv;
public alias glCheck!(derelict.opengl.gl.glEvalCoord2d) glEvalCoord2d;
public alias glCheck!(derelict.opengl.gl.glEvalCoord2f) glEvalCoord2f;
public alias glCheck!(derelict.opengl.gl.glEvalCoord2dv) glEvalCoord2dv;
public alias glCheck!(derelict.opengl.gl.glEvalCoord2fv) glEvalCoord2fv;
public alias glCheck!(derelict.opengl.gl.glMapGrid1d) glMapGrid1d;
public alias glCheck!(derelict.opengl.gl.glMapGrid1f) glMapGrid1f;
public alias glCheck!(derelict.opengl.gl.glMapGrid2d) glMapGrid2d;
public alias glCheck!(derelict.opengl.gl.glMapGrid2f) glMapGrid2f;
public alias glCheck!(derelict.opengl.gl.glEvalPoint1) glEvalPoint1;
public alias glCheck!(derelict.opengl.gl.glEvalPoint2) glEvalPoint2;
public alias glCheck!(derelict.opengl.gl.glEvalMesh1) glEvalMesh1;
public alias glCheck!(derelict.opengl.gl.glEvalMesh2) glEvalMesh2;
public alias glCheck!(derelict.opengl.gl.glFogf) glFogf;
public alias glCheck!(derelict.opengl.gl.glFogi) glFogi;
public alias glCheck!(derelict.opengl.gl.glFogfv) glFogfv;
public alias glCheck!(derelict.opengl.gl.glFogiv) glFogiv;
public alias glCheck!(derelict.opengl.gl.glFeedbackBuffer) glFeedbackBuffer;
public alias glCheck!(derelict.opengl.gl.glPassThrough) glPassThrough;
public alias glCheck!(derelict.opengl.gl.glSelectBuffer) glSelectBuffer;
public alias glCheck!(derelict.opengl.gl.glInitNames) glInitNames;
public alias glCheck!(derelict.opengl.gl.glLoadName) glLoadName;
public alias glCheck!(derelict.opengl.gl.glPushName) glPushName;
public alias glCheck!(derelict.opengl.gl.glPopName) glPopName;
public alias glCheck!(derelict.opengl.gl.glGenTextures) glGenTextures;
public alias glCheck!(derelict.opengl.gl.glDeleteTextures) glDeleteTextures;
public alias glCheck!(derelict.opengl.gl.glBindTexture) glBindTexture;
public alias glCheck!(derelict.opengl.gl.glPrioritizeTextures) glPrioritizeTextures;
public alias glCheck!(derelict.opengl.gl.glAreTexturesResident) glAreTexturesResident;
public alias glCheck!(derelict.opengl.gl.glIsTexture) glIsTexture;
public alias glCheck!(derelict.opengl.gl.glTexSubImage1D) glTexSubImage1D;
public alias glCheck!(derelict.opengl.gl.glTexSubImage2D) glTexSubImage2D;
public alias glCheck!(derelict.opengl.gl.glCopyTexImage1D) glCopyTexImage1D;
public alias glCheck!(derelict.opengl.gl.glCopyTexImage2D) glCopyTexImage2D;
public alias glCheck!(derelict.opengl.gl.glCopyTexSubImage1D) glCopyTexSubImage1D;
public alias glCheck!(derelict.opengl.gl.glCopyTexSubImage2D) glCopyTexSubImage2D;
public alias glCheck!(derelict.opengl.gl.glVertexPointer) glVertexPointer;
public alias glCheck!(derelict.opengl.gl.glNormalPointer) glNormalPointer;
public alias glCheck!(derelict.opengl.gl.glColorPointer) glColorPointer;
public alias glCheck!(derelict.opengl.gl.glIndexPointer) glIndexPointer;
public alias glCheck!(derelict.opengl.gl.glTexCoordPointer) glTexCoordPointer;
public alias glCheck!(derelict.opengl.gl.glEdgeFlagPointer) glEdgeFlagPointer;
public alias glCheck!(derelict.opengl.gl.glGetPointerv) glGetPointerv;
public alias glCheck!(derelict.opengl.gl.glArrayElement) glArrayElement;
public alias glCheck!(derelict.opengl.gl.glDrawArrays) glDrawArrays;
public alias glCheck!(derelict.opengl.gl.glDrawElements) glDrawElements;
public alias glCheck!(derelict.opengl.gl.glInterleavedArrays) glInterleavedArrays;

// OpenGL 1.2 functions
public alias glCheck!(derelict.opengl.gl.glDrawRangeElements) glDrawRangeElements;
public alias glCheck!(derelict.opengl.gl.glTexImage3D) glTexImage3D;
public alias glCheck!(derelict.opengl.gl.glTexSubImage3D) glTexSubImage3D;
public alias glCheck!(derelict.opengl.gl.glCopyTexSubImage3D) glCopyTexSubImage3D;

// OpenGL 1.3 functions
public alias glCheck!(derelict.opengl.gl.glActiveTexture) glActiveTexture;
public alias glCheck!(derelict.opengl.gl.glClientActiveTexture) glClientActiveTexture;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord1d) glMultiTexCoord1d;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord1dv) glMultiTexCoord1dv;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord1f) glMultiTexCoord1f;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord1fv) glMultiTexCoord1fv;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord1i) glMultiTexCoord1i;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord1iv) glMultiTexCoord1iv;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord1s) glMultiTexCoord1s;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord1sv) glMultiTexCoord1sv;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord2d) glMultiTexCoord2d;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord2dv) glMultiTexCoord2dv;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord2f) glMultiTexCoord2f;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord2fv) glMultiTexCoord2fv;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord2i) glMultiTexCoord2i;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord2iv) glMultiTexCoord2iv;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord2s) glMultiTexCoord2s;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord2sv) glMultiTexCoord2sv;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord3d) glMultiTexCoord3d;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord3dv) glMultiTexCoord3dv;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord3f) glMultiTexCoord3f;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord3fv) glMultiTexCoord3fv;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord3i) glMultiTexCoord3i;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord3iv) glMultiTexCoord3iv;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord3s) glMultiTexCoord3s;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord3sv) glMultiTexCoord3sv;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord4d) glMultiTexCoord4d;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord4dv) glMultiTexCoord4dv;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord4f) glMultiTexCoord4f;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord4fv) glMultiTexCoord4fv;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord4i) glMultiTexCoord4i;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord4iv) glMultiTexCoord4iv;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord4s) glMultiTexCoord4s;
public alias glCheck!(derelict.opengl.gl.glMultiTexCoord4sv) glMultiTexCoord4sv;
public alias glCheck!(derelict.opengl.gl.glLoadTransposeMatrixd) glLoadTransposeMatrixd;
public alias glCheck!(derelict.opengl.gl.glLoadTransposeMatrixf) glLoadTransposeMatrixf;
public alias glCheck!(derelict.opengl.gl.glMultTransposeMatrixd) glMultTransposeMatrixd;
public alias glCheck!(derelict.opengl.gl.glMultTransposeMatrixf) glMultTransposeMatrixf;
public alias glCheck!(derelict.opengl.gl.glSampleCoverage) glSampleCoverage;
public alias glCheck!(derelict.opengl.gl.glCompressedTexImage1D) glCompressedTexImage1D;
public alias glCheck!(derelict.opengl.gl.glCompressedTexImage2D) glCompressedTexImage2D;
public alias glCheck!(derelict.opengl.gl.glCompressedTexImage3D) glCompressedTexImage3D;
public alias glCheck!(derelict.opengl.gl.glCompressedTexSubImage1D) glCompressedTexSubImage1D;
public alias glCheck!(derelict.opengl.gl.glCompressedTexSubImage2D) glCompressedTexSubImage2D;
public alias glCheck!(derelict.opengl.gl.glCompressedTexSubImage3D) glCompressedTexSubImage3D;
public alias glCheck!(derelict.opengl.gl.glGetCompressedTexImage) glGetCompressedTexImage;

// OpenGL 1.4 functions
public alias glCheck!(derelict.opengl.gl.glBlendFuncSeparate) glBlendFuncSeparate;
public alias glCheck!(derelict.opengl.gl.glFogCoordf) glFogCoordf;
public alias glCheck!(derelict.opengl.gl.glFogCoordfv) glFogCoordfv;
public alias glCheck!(derelict.opengl.gl.glFogCoordd) glFogCoordd;
public alias glCheck!(derelict.opengl.gl.glFogCoorddv) glFogCoorddv;
public alias glCheck!(derelict.opengl.gl.glFogCoordPointer) glFogCoordPointer;
public alias glCheck!(derelict.opengl.gl.glMultiDrawArrays) glMultiDrawArrays;
public alias glCheck!(derelict.opengl.gl.glMultiDrawElements) glMultiDrawElements;
public alias glCheck!(derelict.opengl.gl.glPointParameterf) glPointParameterf;
public alias glCheck!(derelict.opengl.gl.glPointParameterfv) glPointParameterfv;
public alias glCheck!(derelict.opengl.gl.glPointParameteri) glPointParameteri;
public alias glCheck!(derelict.opengl.gl.glPointParameteriv) glPointParameteriv;
public alias glCheck!(derelict.opengl.gl.glSecondaryColor3b) glSecondaryColor3b;
public alias glCheck!(derelict.opengl.gl.glSecondaryColor3bv) glSecondaryColor3bv;
public alias glCheck!(derelict.opengl.gl.glSecondaryColor3d) glSecondaryColor3d;
public alias glCheck!(derelict.opengl.gl.glSecondaryColor3dv) glSecondaryColor3dv;
public alias glCheck!(derelict.opengl.gl.glSecondaryColor3f) glSecondaryColor3f;
public alias glCheck!(derelict.opengl.gl.glSecondaryColor3fv) glSecondaryColor3fv;
public alias glCheck!(derelict.opengl.gl.glSecondaryColor3i) glSecondaryColor3i;
public alias glCheck!(derelict.opengl.gl.glSecondaryColor3iv) glSecondaryColor3iv;
public alias glCheck!(derelict.opengl.gl.glSecondaryColor3s) glSecondaryColor3s;
public alias glCheck!(derelict.opengl.gl.glSecondaryColor3sv) glSecondaryColor3sv;
public alias glCheck!(derelict.opengl.gl.glSecondaryColor3ub) glSecondaryColor3ub;
public alias glCheck!(derelict.opengl.gl.glSecondaryColor3ubv) glSecondaryColor3ubv;
public alias glCheck!(derelict.opengl.gl.glSecondaryColor3ui) glSecondaryColor3ui;
public alias glCheck!(derelict.opengl.gl.glSecondaryColor3uiv) glSecondaryColor3uiv;
public alias glCheck!(derelict.opengl.gl.glSecondaryColor3us) glSecondaryColor3us;
public alias glCheck!(derelict.opengl.gl.glSecondaryColor3usv) glSecondaryColor3usv;
public alias glCheck!(derelict.opengl.gl.glSecondaryColorPointer) glSecondaryColorPointer;
public alias glCheck!(derelict.opengl.gl.glWindowPos2d) glWindowPos2d;
public alias glCheck!(derelict.opengl.gl.glWindowPos2dv) glWindowPos2dv;
public alias glCheck!(derelict.opengl.gl.glWindowPos2f) glWindowPos2f;
public alias glCheck!(derelict.opengl.gl.glWindowPos2fv) glWindowPos2fv;
public alias glCheck!(derelict.opengl.gl.glWindowPos2i) glWindowPos2i;
public alias glCheck!(derelict.opengl.gl.glWindowPos2iv) glWindowPos2iv;
public alias glCheck!(derelict.opengl.gl.glWindowPos2s) glWindowPos2s;
public alias glCheck!(derelict.opengl.gl.glWindowPos2sv) glWindowPos2sv;
public alias glCheck!(derelict.opengl.gl.glWindowPos3d) glWindowPos3d;
public alias glCheck!(derelict.opengl.gl.glWindowPos3dv) glWindowPos3dv;
public alias glCheck!(derelict.opengl.gl.glWindowPos3f) glWindowPos3f;
public alias glCheck!(derelict.opengl.gl.glWindowPos3fv) glWindowPos3fv;
public alias glCheck!(derelict.opengl.gl.glWindowPos3i) glWindowPos3i;
public alias glCheck!(derelict.opengl.gl.glWindowPos3iv) glWindowPos3iv;
public alias glCheck!(derelict.opengl.gl.glWindowPos3s) glWindowPos3s;
public alias glCheck!(derelict.opengl.gl.glWindowPos3sv) glWindowPos3sv;
public alias glCheck!(derelict.opengl.gl.glBlendColor) glBlendColor;
public alias glCheck!(derelict.opengl.gl.glBlendEquation) glBlendEquation;

// OpenGL 1.5 functions
public alias glCheck!(derelict.opengl.gl.glGenQueries) glGenQueries;
public alias glCheck!(derelict.opengl.gl.glDeleteQueries) glDeleteQueries;
public alias glCheck!(derelict.opengl.gl.glIsQuery) glIsQuery;
public alias glCheck!(derelict.opengl.gl.glBeginQuery) glBeginQuery;
public alias glCheck!(derelict.opengl.gl.glEndQuery) glEndQuery;
public alias glCheck!(derelict.opengl.gl.glGetQueryiv) glGetQueryiv;
public alias glCheck!(derelict.opengl.gl.glGetQueryObjectiv) glGetQueryObjectiv;
public alias glCheck!(derelict.opengl.gl.glGetQueryObjectuiv) glGetQueryObjectuiv;
public alias glCheck!(derelict.opengl.gl.glBindBuffer) glBindBuffer;
public alias glCheck!(derelict.opengl.gl.glDeleteBuffers) glDeleteBuffers;
public alias glCheck!(derelict.opengl.gl.glGenBuffers) glGenBuffers;
public alias glCheck!(derelict.opengl.gl.glIsBuffer) glIsBuffer;
public alias glCheck!(derelict.opengl.gl.glBufferData) glBufferData;
public alias glCheck!(derelict.opengl.gl.glBufferSubData) glBufferSubData;
public alias glCheck!(derelict.opengl.gl.glGetBufferSubData) glGetBufferSubData;
public alias glCheck!(derelict.opengl.gl.glMapBuffer) glMapBuffer;
public alias glCheck!(derelict.opengl.gl.glUnmapBuffer) glUnmapBuffer;
public alias glCheck!(derelict.opengl.gl.glGetBufferParameteriv) glGetBufferParameteriv;
public alias glCheck!(derelict.opengl.gl.glGetBufferPointerv) glGetBufferPointerv;

// OpenGL 2.0 functions
public alias glCheck!(derelict.opengl.gl.glBlendEquationSeparate) glBlendEquationSeparate;
public alias glCheck!(derelict.opengl.gl.glDrawBuffers) glDrawBuffers;
public alias glCheck!(derelict.opengl.gl.glStencilOpSeparate) glStencilOpSeparate;
public alias glCheck!(derelict.opengl.gl.glStencilFuncSeparate) glStencilFuncSeparate;
public alias glCheck!(derelict.opengl.gl.glStencilMaskSeparate) glStencilMaskSeparate;
public alias glCheck!(derelict.opengl.gl.glAttachShader) glAttachShader;
public alias glCheck!(derelict.opengl.gl.glBindAttribLocation) glBindAttribLocation;
public alias glCheck!(derelict.opengl.gl.glCompileShader) glCompileShader;
public alias glCheck!(derelict.opengl.gl.glCreateProgram) glCreateProgram;
public alias glCheck!(derelict.opengl.gl.glCreateShader) glCreateShader;
public alias glCheck!(derelict.opengl.gl.glDeleteProgram) glDeleteProgram;
public alias glCheck!(derelict.opengl.gl.glDeleteShader) glDeleteShader;
public alias glCheck!(derelict.opengl.gl.glDetachShader) glDetachShader;
public alias glCheck!(derelict.opengl.gl.glDisableVertexAttribArray) glDisableVertexAttribArray;
public alias glCheck!(derelict.opengl.gl.glEnableVertexAttribArray) glEnableVertexAttribArray;
public alias glCheck!(derelict.opengl.gl.glGetActiveAttrib) glGetActiveAttrib;
public alias glCheck!(derelict.opengl.gl.glGetActiveUniform) glGetActiveUniform;
public alias glCheck!(derelict.opengl.gl.glGetAttachedShaders) glGetAttachedShaders;
public alias glCheck!(derelict.opengl.gl.glGetAttribLocation) glGetAttribLocation;
public alias glCheck!(derelict.opengl.gl.glGetProgramiv) glGetProgramiv;
public alias glCheck!(derelict.opengl.gl.glGetProgramInfoLog) glGetProgramInfoLog;
public alias glCheck!(derelict.opengl.gl.glGetShaderiv) glGetShaderiv;
public alias glCheck!(derelict.opengl.gl.glGetShaderInfoLog) glGetShaderInfoLog;
public alias glCheck!(derelict.opengl.gl.glGetShaderSource) glGetShaderSource;
public alias glCheck!(derelict.opengl.gl.glGetUniformLocation) glGetUniformLocation;
public alias glCheck!(derelict.opengl.gl.glGetUniformfv) glGetUniformfv;
public alias glCheck!(derelict.opengl.gl.glGetUniformiv) glGetUniformiv;
public alias glCheck!(derelict.opengl.gl.glGetVertexAttribdv) glGetVertexAttribdv;
public alias glCheck!(derelict.opengl.gl.glGetVertexAttribfv) glGetVertexAttribfv;
public alias glCheck!(derelict.opengl.gl.glGetVertexAttribiv) glGetVertexAttribiv;
public alias glCheck!(derelict.opengl.gl.glGetVertexAttribPointerv) glGetVertexAttribPointerv;
public alias glCheck!(derelict.opengl.gl.glIsProgram) glIsProgram;
public alias glCheck!(derelict.opengl.gl.glIsShader) glIsShader;
public alias glCheck!(derelict.opengl.gl.glLinkProgram) glLinkProgram;
public alias glCheck!(derelict.opengl.gl.glShaderSource) glShaderSource;
public alias glCheck!(derelict.opengl.gl.glUseProgram) glUseProgram;
public alias glCheck!(derelict.opengl.gl.glUniform1f) glUniform1f;
public alias glCheck!(derelict.opengl.gl.glUniform2f) glUniform2f;
public alias glCheck!(derelict.opengl.gl.glUniform3f) glUniform3f;
public alias glCheck!(derelict.opengl.gl.glUniform4f) glUniform4f;
public alias glCheck!(derelict.opengl.gl.glUniform1i) glUniform1i;
public alias glCheck!(derelict.opengl.gl.glUniform2i) glUniform2i;
public alias glCheck!(derelict.opengl.gl.glUniform3i) glUniform3i;
public alias glCheck!(derelict.opengl.gl.glUniform4i) glUniform4i;
public alias glCheck!(derelict.opengl.gl.glUniform1fv) glUniform1fv;
public alias glCheck!(derelict.opengl.gl.glUniform2fv) glUniform2fv;
public alias glCheck!(derelict.opengl.gl.glUniform3fv) glUniform3fv;
public alias glCheck!(derelict.opengl.gl.glUniform4fv) glUniform4fv;
public alias glCheck!(derelict.opengl.gl.glUniform1iv) glUniform1iv;
public alias glCheck!(derelict.opengl.gl.glUniform2iv) glUniform2iv;
public alias glCheck!(derelict.opengl.gl.glUniform3iv) glUniform3iv;
public alias glCheck!(derelict.opengl.gl.glUniform4iv) glUniform4iv;
public alias glCheck!(derelict.opengl.gl.glUniformMatrix2fv) glUniformMatrix2fv;
public alias glCheck!(derelict.opengl.gl.glUniformMatrix3fv) glUniformMatrix3fv;
public alias glCheck!(derelict.opengl.gl.glUniformMatrix4fv) glUniformMatrix4fv;
public alias glCheck!(derelict.opengl.gl.glValidateProgram) glValidateProgram;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib1d) glVertexAttrib1d;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib1dv) glVertexAttrib1dv;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib1f) glVertexAttrib1f;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib1fv) glVertexAttrib1fv;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib1s) glVertexAttrib1s;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib1sv) glVertexAttrib1sv;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib2d) glVertexAttrib2d;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib2dv) glVertexAttrib2dv;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib2f) glVertexAttrib2f;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib2fv) glVertexAttrib2fv;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib2s) glVertexAttrib2s;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib2sv) glVertexAttrib2sv;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib3d) glVertexAttrib3d;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib3dv) glVertexAttrib3dv;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib3f) glVertexAttrib3f;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib3fv) glVertexAttrib3fv;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib3s) glVertexAttrib3s;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib3sv) glVertexAttrib3sv;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib4Nbv) glVertexAttrib4Nbv;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib4Niv) glVertexAttrib4Niv;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib4Nsv) glVertexAttrib4Nsv;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib4Nub) glVertexAttrib4Nub;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib4Nubv) glVertexAttrib4Nubv;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib4Nuiv) glVertexAttrib4Nuiv;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib4Nusv) glVertexAttrib4Nusv;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib4bv) glVertexAttrib4bv;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib4d) glVertexAttrib4d;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib4dv) glVertexAttrib4dv;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib4f) glVertexAttrib4f;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib4fv) glVertexAttrib4fv;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib4iv) glVertexAttrib4iv;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib4s) glVertexAttrib4s;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib4sv) glVertexAttrib4sv;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib4ubv) glVertexAttrib4ubv;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib4uiv) glVertexAttrib4uiv;
public alias glCheck!(derelict.opengl.gl.glVertexAttrib4usv) glVertexAttrib4usv;
public alias glCheck!(derelict.opengl.gl.glVertexAttribPointer) glVertexAttribPointer;

// OpenGL 2.1 functions
public alias glCheck!(derelict.opengl.gl.glUniformMatrix2x3fv) glUniformMatrix2x3fv;
public alias glCheck!(derelict.opengl.gl.glUniformMatrix3x2fv) glUniformMatrix3x2fv;
public alias glCheck!(derelict.opengl.gl.glUniformMatrix2x4fv) glUniformMatrix2x4fv;
public alias glCheck!(derelict.opengl.gl.glUniformMatrix4x2fv) glUniformMatrix4x2fv;
public alias glCheck!(derelict.opengl.gl.glUniformMatrix3x4fv) glUniformMatrix3x4fv;
public alias glCheck!(derelict.opengl.gl.glUniformMatrix4x3fv) glUniformMatrix4x3fv;
